from flask import *
from flask_sqlalchemy import *
import os


class Config:
    DEBUG = True
    APP_PATH = os.path.dirname(__file__)
    SQLALCHEMY_DATABASE_URI = 'mysql://root:123@127.0.0.1:3306/study'
    SQLALCHEMY_TRACK_MODIFICATIONS = True


app = Flask(__name__)
app.config.from_object(Config)  # 先指定配置类
# 创建数据库链接
db = SQLAlchemy(app)


class Father(db.Model):
    """创建一个父亲模型类"""
    # 表名
    tablename = 'father'
    # id主键列，整数类型，自增
    id = db.Column(db.Integer, primary_key=True)
    # name，可变长字符串类型
    name = db.Column(db.String(20))
    # 关系字段，不是数据库中真实存在的字段，而是为了方便查询添加的属性
    son = db.relationship('Son', backref='father')


class Son(db.Model):
    # 表名
    tablename = 'son'
    # id主键列，整数类型，自增
    id = db.Column(db.Integer, primary_key=True)
    # name，可变长字符串类型
    name = db.Column(db.String(20))
    # 外键，需要指定字段类型，以及关联那个表的那个字段
    father_id = db.Column(db.Integer, db.ForeignKey('father.id'))

    def __repr__(self):
        return self.name


if __name__ == '__main__':
    db.create_all()
    f = Father()
    f.name = "zyd"
    db.session.add(f)
    db.session.commit()

    s1 = Son()
    s1.name = "cmy"
    s1.father_id = f.id
    s2 = Son()
    s2.name = "djy"
    s2.father_id = f.id
    db.session.add(s1)
    db.session.add(s2)
    db.session.commit()
